package cn.stard.controller;

import cn.stard.domian.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class OrderController {

@Autowired
private RestTemplate restTemplate;//用来发请求的  代替以前的工具类
    /* 把注解作用于方法上*/
    @HystrixCommand(fallbackMethod = "getUserByIdfallbackMethod")
    @GetMapping("/getUserById/{id}")
    public User getUserById(@PathVariable Long id){
        //调用user的接口
        //这里  getForObject方法  就是用来发get请求的
        //两个参数  一个是请求的url   一个是返回的类型
        String url = "http://user-server/getUserById/" + id;
        return restTemplate.getForObject(url, User.class);
    }
    public User getUserByIdfallbackMethod(@PathVariable Long id){
        return User.builder().id(-1L).intro("方法熔断进入").build();
    }

}
